<?php

/**
 * mensaje actions.
 *
 * @package    inmobiliaria-payaso
 * @subpackage mensaje
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class mensajeActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->mensajes = $this->getUser();

    $this->pager = new sfDoctrinePager(
      'Destinatario',
      sfConfig::get('app_max_mensajes_en_bandeja')
    );
    $this->pager->setQuery($this->mensajes->getMensajesDeUserQuery());
    $this->pager->setPage($request->getParameter('page', 1));
    $this->pager->init();
  }

  public function executeShow(sfWebRequest $request)
  {
    $mensaje = $this->getRoute()->getObject();
    if($destinatario = $this->getUser()->haRecibido($mensaje))
    {
      $destinatario->leer();
      $this->mensaje = $mensaje;      
    }
    $this->forward404Unless($this->mensaje);
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->form = new MensajeForm();
    $this->processForm($request, $this->form);
    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->form = new MensajeForm($this->getRoute()->getObject());
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->form = new MensajeForm($this->getRoute()->getObject());
    $this->processForm($request, $this->form);
    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $mensaje = $this->getRoute()->getObject();
    $mensaje->delete();

    $this->redirect('mensaje/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind(
      $request->getParameter($form->getName()), 
      $request->getFiles($form->getName())
    );

    if ($form->isValid())
    {
      $mensaje = $form->save();
      $this->redirect('homepage', $mensaje);
    }
  }

  public function executeMandamiento(sfWebRequest $request)
  {
    $especialidad = Doctrine_Core::getTable('Especialidad')->findOneByDescripcion('Mandatario');
    
    $mensaje = new Mensaje();
    $mensaje->setEspecialidad($especialidad);
    
    $this->form = new MensajeForm($mensaje);
  }

  public function executeTasacion(sfWebRequest $request)
  {
    $especialidad = Doctrine_Core::getTable('Especialidad')->findOneByDescripcion('Tasador');
    
    $mensaje = new Mensaje();
    $mensaje->setEspecialidad($especialidad);
    
    $this->form = new MensajeForm($mensaje);
  }

  public function executeContacto(sfWebRequest $request)
  {
    $propiedadId = $this->getRoute()->getObject()->getId();
    $this->getUser()->setAttribute('propiedadId',$propiedadId , 'admin_module');

    $mensaje = new Mensaje();

    $especialidad = Doctrine_Core::getTable('Especialidad')->findOneByDescripcion('Contactable');
    
    $mensaje->setEspecialidad($especialidad);
    
    $this->form = new MensajeForm($mensaje);
  }
}
